home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / backgammon / bg.mf < prev    next >
Text File  |  1994-11-20  |  20KB  |  1,099 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. %   bg.mf : A character set to draw backgammon matches in LaTeX       %
  3. %                                      %
  4. %         Copyright by J. Richter 1994                          %
  5. %                                      %
  6. % Distribution and use is free, as long as you don't change this file %
  7. %                                      %
  8. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  9.  
  10. mode_setup;
  11.  
  12. size# := 30pt#; % Length of the edge of one square
  13. number_shadepoints := 15; % Numbers of pixels for black point per row
  14.  
  15. pensize# := size#/100;
  16.  
  17. define_pixels(size, pensize);
  18.  
  19. whitecheckersize := size-3*pensize;
  20. blackcheckersize := size;
  21. digitpensize := 5*pensize;
  22.  
  23. erasediameter := size/2;
  24.  
  25. font_x_height size#;
  26. font_quad size#;
  27.  
  28. %%%%%%%%%%%%%%%%
  29. % upwhitepoint %
  30. %%%%%%%%%%%%%%%%
  31.  
  32. def upwhitepoint(expr i) =
  33.  
  34. pickup pencircle scaled pensize;
  35.  
  36. draw (0.1*i*size,0pt)--(0.1*(i+1)*size,size);
  37. draw ((0.9-i*0.1)*size,size)--((1-i*.1)*size,0pt);
  38.  
  39. enddef; % upwhitepoint
  40.  
  41. %%%%%%%%%%%%%%%%%%
  42. % downwhitepoint %
  43. %%%%%%%%%%%%%%%%%%
  44.  
  45. def downwhitepoint(expr i) =
  46.  
  47. pickup pencircle scaled pensize;
  48.  
  49. draw (0.1*i*size,size)--(0.1*(i+1)*size,0pt);
  50. draw ((0.9-i*0.1)*size,0pt)--((1-i*.1)*size,size);
  51.  
  52. enddef; % downwhitepoint
  53.  
  54. %%%%%%%%%%%%%%%%
  55. % upblackpoint %
  56. %%%%%%%%%%%%%%%%
  57.  
  58. def upblackpoint(expr i) =
  59.  
  60. boolean first_time;
  61.  
  62. x := 0;
  63. y := 0;
  64.  
  65. if 2*round(i/2)=i:
  66.     offset := 0;
  67. else :
  68.     offset := size/(2number_shadepoints);
  69. fi;
  70.  
  71. pickup pencircle scaled 2pensize;
  72.  
  73. for y = 1 upto number_shadepoints :
  74.     if offset = 0 :
  75.         offset := size/(2number_shadepoints)
  76.     else :
  77.         offset := 0;
  78.     fi;
  79.     for x = 0 upto number_shadepoints - 1:
  80.         if (0.1*(i+y/number_shadepoints)*size< x*(size/number_shadepoints)+offset) and 
  81.                 ((1-(i+y/number_shadepoints)*0.1)*size > x*(size/number_shadepoints)+offset):
  82.             drawdot (x*(size/number_shadepoints)+offset,y*(size/number_shadepoints));
  83.         fi;
  84.     endfor;
  85. endfor;
  86.  
  87. pickup pencircle scaled pensize;
  88.  
  89. draw (0.1*i*size,0pt)--(0.1*(i+1)*size,size);
  90. draw ((0.9-i*0.1)*size,size)--((1-i*.1)*size,0pt);
  91.  
  92. enddef; % upblackpoint
  93.  
  94. %%%%%%%%%%%%%%%%%%
  95. % downblackpoint %
  96. %%%%%%%%%%%%%%%%%%
  97.  
  98. def downblackpoint(expr i) =
  99.  
  100. boolean first_time;
  101.  
  102. x := 0;
  103. y := 0;
  104. if 2*round(i/2)=i:
  105.     offset := size/(2number_shadepoints);
  106. else :
  107.     offset := 0;
  108. fi;
  109.  
  110. pickup pencircle scaled 2pensize;
  111.  
  112. for y = 1 upto number_shadepoints :
  113.     if offset = 0 :
  114.         offset := size/(2number_shadepoints)
  115.     else :
  116.         offset := 0;
  117.     fi;
  118.     for x = 0 upto number_shadepoints - 1:
  119.         if (0.1*(i+(1-y/number_shadepoints))*size< x*(size/number_shadepoints)+offset) and 
  120.                 ((1-(i+(1-y/number_shadepoints))*0.1)*size > x*(size/number_shadepoints)+offset):
  121.             drawdot (x*(size/number_shadepoints)+offset,y*(size/number_shadepoints));
  122.         fi;
  123.     endfor;
  124. endfor;
  125.  
  126. pickup pencircle scaled pensize;
  127.  
  128. draw (0.1*i*size,size)--(0.1*(i+1)*size,0pt);
  129. draw ((0.9-i*0.1)*size,0pt)--((1-i*.1)*size,size);
  130.  
  131. enddef; % upblackpoint
  132.  
  133. %%%%%%%%%%%%%%%%
  134. % whitechecker %
  135. %%%%%%%%%%%%%%%%
  136.  
  137. def whitechecker =
  138.  
  139. pickup pencircle scaled 3pensize;
  140.  
  141. erase fill fullcircle scaled whitecheckersize shifted (size/2, size/2);
  142. draw fullcircle scaled whitecheckersize shifted (size/2, size/2);
  143.  
  144. enddef; % whitechecker
  145.  
  146. %%%%%%%%%%%%%%%%
  147. % blackchecker %
  148. %%%%%%%%%%%%%%%%
  149.  
  150. def blackchecker =
  151.  
  152. pickup pencircle scaled 3pensize;
  153.  
  154. fill fullcircle scaled blackcheckersize shifted (size/2, size/2);
  155.  
  156. enddef; % blackchecker
  157.  
  158. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  159. % Macros to draw the digits from 0 to 9 %
  160. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  161.  
  162.  
  163. def drawdigit_zero(expr xstart,ystart,scale) =
  164.  
  165. pickup pencircle xscaled digitpensize yscaled pensize;
  166. draw (xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*size/2){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/2){up}..cycle;
  167.  
  168. enddef; %drawdigit_zero
  169.  
  170. def drawdigit_one(expr xstart,ystart,scale) =
  171.  
  172. pickup pencircle xscaled digitpensize yscaled pensize;
  173. draw (xstart+scale*0,ystart+scale*3size/4)--(xstart+scale*size/4,ystart+scale*size)--(xstart+scale*size/4,ystart+scale*0);
  174. draw (xstart+scale*0,ystart+scale*0)--(xstart+scale*size/2,ystart+scale*0);
  175.  
  176. enddef; %drawdigit_one
  177.  
  178. def drawdigit_two(expr xstart,ystart,scale) =
  179.  
  180. pickup pencircle xscaled digitpensize yscaled pensize;
  181. draw (xstart+scale*0,ystart+scale*3size/4){up}..(xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*3size/4){down}..(xstart+scale*0,ystart+scale*0){dir 270};
  182. draw(xstart+scale*0,ystart+scale*0)--(xstart+scale*size/2,ystart+scale*0);
  183.  
  184. enddef; %drawdigit_two
  185.  
  186. def drawdigit_three(expr xstart,ystart,scale) =
  187.  
  188. pickup pencircle xscaled digitpensize yscaled pensize;
  189. draw (xstart+scale*0,ystart+scale*7size/8){dir 45}..(xstart+scale*size/4,ystart+scale*size){right}..(xstart+scale*size/2,ystart+scale*13size/16){down}..(xstart+scale*size/8,ystart+scale*55size/100){left};
  190. draw (xstart+scale*size/8,ystart+scale*55size/100){right}..(xstart+scale*size/2,ystart+scale*5size/16){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/8){up};
  191.  
  192. enddef; %drawdigit_three
  193.  
  194. def drawdigit_four(expr xstart,ystart,scale) =
  195.  
  196. pickup pencircle xscaled digitpensize yscaled pensize;
  197.  
  198. draw (xstart+scale*size/2,ystart+scale*size/4)--(xstart+scale*0,ystart+scale*size/4)--(xstart+scale*3size/8,ystart+scale*size)--(xstart+scale*3size/8,ystart+scale*0)
  199.  
  200. enddef; %drawdigit_four
  201.  
  202. def drawdigit_five(expr xstart,ystart,scale) =
  203.  
  204. pickup pencircle xscaled digitpensize yscaled pensize;
  205.  
  206. draw (xstart+scale*size/2,ystart+scale*size)--(xstart+scale*0,ystart+scale*size)--(xstart+scale*0,ystart+scale*55size/100){dir 13}..(xstart+scale*size/2,ystart+scale*size/4){down}..(xstart+scale*size/4,ystart+scale*0){left}..(xstart+scale*0,ystart+scale*size/4){up}
  207.  
  208. enddef; %drawdigit_five
  209.  
  210. def drawdigit_six(expr xstart,ystart,scale) =
  211.  
  212. pickup pencircle xscaled digitpensize yscaled pensize;
  213.  
  214. draw (xstart+scale*size/2,ystart+scale*size){left}..(xstart+scale*0,ystart+scale*3size/10){down}..(xstart+scale*size/4,ystart+scale*0){right}..(xstart+scale*size/2,ystart+scale*3size/10){up}..(xstart+scale*size/4,ystart+scale*6size/10){left}..(xstart+scale*0,ystart+scale*3size/10){down}
  215.  
  216. enddef; %drawdigit_six
  217.  
  218. def drawdigit_seven(expr xstart,ystart,scale) =
  219.  
  220. pickup pencircle xscaled digitpensize yscaled pensize;
  221.  
  222. draw (xstart+scale*0,ystart+scale*size)--(xstart+scale*size/2,ystart+scale*size)--(xstart+scale*0,ystart+scale*0)
  223.  
  224. enddef; %drawdigit_seven
  225.  
  226. def drawdigit_eight(expr xstart,ystart,scale) =
  227.  
  228. pickup pencircle xscaled digitpensize yscaled pensize;
  229.  
  230. diameter1 := scale*0.9size/2;
  231. diameter2 := scale*1.1size/2;
  232. draw fullcircle scaled diameter1 shifted (xstart+scale*size/4,ystart+scale*1.55size/2);
  233. draw fullcircle scaled diameter2 shifted (xstart+scale*size/4,ystart+scale*0.55size/2);
  234.  
  235. enddef; %drawdigit_eight
  236.  
  237. def drawdigit_nine(expr xstart,ystart,scale) =
  238.  
  239. pickup pencircle xscaled digitpensize yscaled pensize;
  240.  
  241. draw (xstart+scale*0,ystart+scale*0){right}..(xstart+scale*size/2,ystart+scale*7size/10){up}..(xstart+scale*size/4,ystart+scale*size){left}..(xstart+scale*0,ystart+scale*7size/10){down}..(xstart+scale*size/4,ystart+scale*4size/10){right}..(xstart+scale*size/2,ystart+scale*7size/10){up}
  242.  
  243. enddef; %drawdigit_nine
  244.  
  245. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  246. % The numbers from 1 to 24 to number the boardpoints %
  247. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  248.  
  249. beginchar(128, size#, size#, 0);
  250.  
  251. drawdigit_one(0.425size,0.35size,0.3)
  252.  
  253. endchar;
  254.  
  255. beginchar(129, size#, size#, 0);
  256.  
  257. drawdigit_two(0.425size,0.35size,0.3)
  258.  
  259. endchar;
  260.  
  261. beginchar(130, size#, size#, 0);
  262.  
  263. drawdigit_three(0.425size,0.35size,0.3)
  264.  
  265. endchar;
  266.  
  267. beginchar(131, size#, size#, 0);
  268.  
  269. drawdigit_four(0.425size,0.35size,0.3)
  270.  
  271. endchar;
  272.  
  273. beginchar(132, size#, size#, 0);
  274.  
  275. drawdigit_five(0.425size,0.35size,0.3)
  276.  
  277. endchar;
  278.  
  279. beginchar(133, size#, size#, 0);
  280.  
  281. drawdigit_six(0.425size,0.35size,0.3)
  282.  
  283. endchar;
  284.  
  285. beginchar(134, size#, size#, 0);
  286.  
  287. drawdigit_seven(0.44size,0.35size,0.3)
  288.  
  289. endchar;
  290.  
  291. beginchar(135, size#, size#, 0);
  292.  
  293. drawdigit_eight(0.425size,0.35size,0.3)
  294.  
  295. endchar;
  296.  
  297. beginchar(136, size#, size#, 0);
  298.  
  299. drawdigit_nine(0.425size,0.35size,0.3)
  300.  
  301. endchar;
  302.  
  303. beginchar(137, size#, size#, 0);
  304.  
  305. drawdigit_one(0.32size,0.35size,0.3)
  306. drawdigit_zero(0.55size,0.35size,0.3)
  307.  
  308. endchar;
  309.  
  310. beginchar(138, size#, size#, 0);
  311.  
  312. drawdigit_one(0.32size,0.35size,0.3)
  313. drawdigit_one(0.55size,0.35size,0.3)
  314.  
  315. endchar;
  316.  
  317. beginchar(139, size#, size#, 0);
  318.  
  319. drawdigit_one(0.32size,0.35size,0.3)
  320. drawdigit_two(0.55size,0.35size,0.3)
  321.  
  322. endchar;
  323.  
  324. beginchar(140, size#, size#, 0);
  325.  
  326. drawdigit_one(0.32size,0.35size,0.3)
  327. drawdigit_three(0.55size,0.35size,0.3)
  328.  
  329. endchar;
  330.  
  331. beginchar(141, size#, size#, 0);
  332.  
  333. drawdigit_one(0.32size,0.35size,0.3)
  334. drawdigit_four(0.55size,0.35size,0.3)
  335.  
  336. endchar;
  337.  
  338. beginchar(142, size#, size#, 0);
  339.  
  340. drawdigit_one(0.32size,0.35size,0.3)
  341. drawdigit_five(0.55size,0.35size,0.3)
  342.  
  343. endchar;
  344.  
  345. beginchar(143, size#, size#, 0);
  346.  
  347. drawdigit_one(0.32size,0.35size,0.3)
  348. drawdigit_six(0.55size,0.35size,0.3)
  349.  
  350. endchar;
  351.  
  352. beginchar(144, size#, size#, 0);
  353.  
  354. drawdigit_one(0.32size,0.35size,0.3)
  355. drawdigit_seven(0.55size,0.35size,0.3)
  356.  
  357. endchar;
  358.  
  359. beginchar(145, size#, size#, 0);
  360.  
  361. drawdigit_one(0.32size,0.35size,0.3)
  362. drawdigit_eight(0.55size,0.35size,0.3)
  363.  
  364. endchar;
  365.  
  366. beginchar(146, size#, size#, 0);
  367.  
  368. drawdigit_one(0.32size,0.35size,0.3)
  369. drawdigit_nine(0.55size,0.35size,0.3)
  370.  
  371. endchar;
  372.  
  373. beginchar(147, size#, size#, 0);
  374.  
  375. drawdigit_two(0.32size,0.35size,0.3)
  376. drawdigit_zero(0.55size,0.35size,0.3)
  377.  
  378. endchar;
  379.  
  380. beginchar(148, size#, size#, 0);
  381.  
  382. drawdigit_two(0.32size,0.35size,0.3)
  383. drawdigit_one(0.55size,0.35size,0.3)
  384.  
  385. endchar;
  386.  
  387. beginchar(149, size#, size#, 0);
  388.  
  389. drawdigit_two(0.32size,0.35size,0.3)
  390. drawdigit_two(0.55size,0.35size,0.3)
  391.  
  392. endchar;
  393.  
  394. beginchar(150, size#, size#, 0);
  395.  
  396. drawdigit_two(0.32size,0.35size,0.3)
  397. drawdigit_three(0.55size,0.35size,0.3)
  398.  
  399. endchar;
  400.  
  401. beginchar(151, size#, size#, 0);
  402.  
  403. drawdigit_two(0.32size,0.35size,0.3)
  404. drawdigit_four(0.55size,0.35size,0.3)
  405.  
  406. endchar;
  407.  
  408. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  409. % checkers with numbers on it %
  410. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  411.  
  412. code := 142;
  413.  
  414. for background = 1 upto 5:
  415.  
  416. for colour = 1 upto 2:
  417.  
  418. code := code + 10;
  419.  
  420. beginchar(code, size#, size#, 0);
  421.  
  422. if background = 2: downwhitepoint(4) fi
  423. if background = 3: downblackpoint(4) fi
  424. if background = 4: upwhitepoint(4) fi
  425. if background = 5: upblackpoint(4) fi
  426.  
  427. if colour = 1: whitechecker
  428. else: blackchecker
  429. fi
  430.  
  431. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  432.  
  433. drawdigit_six(0.425size,0.35size,0.3)
  434.  
  435. endchar;
  436.  
  437. beginchar(code+1, size#, size#, 0);
  438.  
  439. if background = 2: downwhitepoint(4) fi
  440. if background = 3: downblackpoint(4) fi
  441. if background = 4: upwhitepoint(4) fi
  442. if background = 5: upblackpoint(4) fi
  443.  
  444. if colour = 1: whitechecker
  445. else: blackchecker
  446. fi
  447.  
  448. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  449.  
  450.  
  451. drawdigit_seven(0.44size,0.35size,0.3)
  452.  
  453. endchar;
  454.  
  455. beginchar(code+2, size#, size#, 0);
  456.  
  457. if background = 2: downwhitepoint(4) fi
  458. if background = 3: downblackpoint(4) fi
  459. if background = 4: upwhitepoint(4) fi
  460. if background = 5: upblackpoint(4) fi
  461.  
  462. if colour = 1: whitechecker
  463. else: blackchecker
  464. fi
  465.  
  466. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  467.  
  468.  
  469. drawdigit_eight(0.425size,0.35size,0.3)
  470.  
  471. endchar;
  472.  
  473. beginchar(code+3, size#, size#, 0);
  474.  
  475. if background = 2: downwhitepoint(4) fi
  476. if background = 3: downblackpoint(4) fi
  477. if background = 4: upwhitepoint(4) fi
  478. if background = 5: upblackpoint(4) fi
  479.  
  480. if colour = 1: whitechecker
  481. else: blackchecker
  482. fi
  483.  
  484. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  485.  
  486.  
  487. drawdigit_nine(0.425size,0.35size,0.3)
  488.  
  489. endchar;
  490.  
  491. beginchar(code+4, size#, size#, 0);
  492.  
  493. if background = 2: downwhitepoint(4) fi
  494. if background = 3: downblackpoint(4) fi
  495. if background = 4: upwhitepoint(4) fi
  496. if background = 5: upblackpoint(4) fi
  497.  
  498. if colour = 1: whitechecker
  499. else: blackchecker
  500. fi
  501.  
  502. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  503.  
  504.  
  505. drawdigit_one(0.32size,0.35size,0.3)
  506. drawdigit_zero(0.55size,0.35size,0.3)
  507.  
  508. endchar;
  509.  
  510. beginchar(code+5, size#, size#, 0);
  511.  
  512. if background = 2: downwhitepoint(4) fi
  513. if background = 3: downblackpoint(4) fi
  514. if background = 4: upwhitepoint(4) fi
  515. if background = 5: upblackpoint(4) fi
  516.  
  517. if colour = 1: whitechecker
  518. else: blackchecker
  519. fi
  520.  
  521. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  522.  
  523.  
  524. drawdigit_one(0.32size,0.35size,0.3)
  525. drawdigit_one(0.55size,0.35size,0.3)
  526.  
  527. endchar;
  528.  
  529. beginchar(code+6, size#, size#, 0);
  530.  
  531. if background = 2: downwhitepoint(4) fi
  532. if background = 3: downblackpoint(4) fi
  533. if background = 4: upwhitepoint(4) fi
  534. if background = 5: upblackpoint(4) fi
  535.  
  536. if colour = 1: whitechecker
  537. else: blackchecker
  538. fi
  539.  
  540. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  541.  
  542.  
  543. drawdigit_one(0.32size,0.35size,0.3)
  544. drawdigit_two(0.55size,0.35size,0.3)
  545.  
  546. endchar;
  547.  
  548. beginchar(code+7, size#, size#, 0);
  549.  
  550. if background = 2: downwhitepoint(4) fi
  551. if background = 3: downblackpoint(4) fi
  552. if background = 4: upwhitepoint(4) fi
  553. if background = 5: upblackpoint(4) fi
  554.  
  555. if colour = 1: whitechecker
  556. else: blackchecker
  557. fi
  558.  
  559. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  560.  
  561.  
  562. drawdigit_one(0.32size,0.35size,0.3)
  563. drawdigit_three(0.55size,0.35size,0.3)
  564.  
  565. endchar;
  566.  
  567. beginchar(code+8, size#, size#, 0);
  568.  
  569. if background = 2: downwhitepoint(4) fi
  570. if background = 3: downblackpoint(4) fi
  571. if background = 4: upwhitepoint(4) fi
  572. if background = 5: upblackpoint(4) fi
  573.  
  574. if colour = 1: whitechecker
  575. else: blackchecker
  576. fi
  577.  
  578. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  579.  
  580.  
  581. drawdigit_one(0.32size,0.35size,0.3)
  582. drawdigit_four(0.55size,0.35size,0.3)
  583.  
  584. endchar;
  585.  
  586. beginchar(code+9, size#, size#, 0);
  587.  
  588. if background = 2: downwhitepoint(4) fi
  589. if background = 3: downblackpoint(4) fi
  590. if background = 4: upwhitepoint(4) fi
  591. if background = 5: upblackpoint(4) fi
  592.  
  593. if colour = 1: whitechecker
  594. else: blackchecker
  595. fi
  596.  
  597. erase fill (size/4,size/4)--(size/4,3size/4)--(3size/4,3size/4)--(3size/4,size/4)--cycle;
  598.  
  599.  
  600. drawdigit_one(0.32size,0.35size,0.3)
  601. drawdigit_five(0.55size,0.35size,0.3)
  602.  
  603. endchar;
  604.  
  605. endfor;
  606.  
  607. endfor;
  608.  
  609. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  610. % white points without checkers %
  611. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  612.  
  613. beginchar("a", size#, size#, 0);
  614.  
  615. upwhitepoint(0)
  616.  
  617. endchar;
  618.  
  619. beginchar("b", size#, size#, 0);
  620.  
  621. upwhitepoint(1)
  622.  
  623. endchar;
  624.  
  625. beginchar("c", size#, size#, 0);
  626.  
  627. upwhitepoint(2)
  628.  
  629. endchar;
  630.  
  631. beginchar("d", size#, size#, 0);
  632.  
  633. upwhitepoint(3)
  634.  
  635. endchar;
  636.  
  637. beginchar("e", size#, size#, 0);
  638.  
  639. upwhitepoint(4)
  640.  
  641. endchar;
  642.  
  643. beginchar("k", size#, size#, 0);
  644.  
  645. downwhitepoint(0)
  646.  
  647. endchar;
  648.  
  649. beginchar("l", size#, size#, 0);
  650.  
  651. downwhitepoint(1)
  652.  
  653. endchar;
  654.  
  655. beginchar("m", size#, size#, 0);
  656.  
  657. downwhitepoint(2)
  658.  
  659. endchar;
  660.  
  661. beginchar("n", size#, size#, 0);
  662.  
  663. downwhitepoint(3)
  664.  
  665. endchar;
  666.  
  667. beginchar("o", size#, size#, 0);
  668.  
  669. downwhitepoint(4)
  670.  
  671. endchar;
  672.  
  673. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  674. % black points without checkers %
  675. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  676.  
  677. beginchar("f", size#, size#, 0);
  678.  
  679. upblackpoint(0)
  680.  
  681. endchar;
  682.  
  683. beginchar("g", size#, size#, 0);
  684.  
  685. upblackpoint(1)
  686.  
  687. endchar;
  688.  
  689. beginchar("h", size#, size#, 0);
  690.  
  691. upblackpoint(2)
  692.  
  693. endchar;
  694.  
  695. beginchar("i", size#, size#, 0);
  696.  
  697. upblackpoint(3)
  698.  
  699. endchar;
  700.  
  701. beginchar("j", size#, size#, 0);
  702.  
  703. upblackpoint(4)
  704.  
  705. endchar;
  706.  
  707. beginchar("p", size#, size#, 0);
  708.  
  709. downblackpoint(0)
  710.  
  711. endchar;
  712.  
  713. beginchar("q", size#, size#, 0);
  714.  
  715. downblackpoint(1)
  716.  
  717. endchar;
  718.  
  719. beginchar("r", size#, size#, 0);
  720.  
  721. downblackpoint(2)
  722.  
  723. endchar;
  724.  
  725. beginchar("s", size#, size#, 0);
  726.  
  727. downblackpoint(3)
  728.  
  729. endchar;
  730.  
  731. beginchar("t", size#, size#, 0);
  732.  
  733. downblackpoint(4)
  734.  
  735. endchar;
  736.  
  737. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  738. % white points with white checkers %
  739. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  740.  
  741. beginchar("A", size#, size#, 0);
  742.  
  743. upwhitepoint(0)
  744. whitechecker
  745.  
  746. endchar;
  747.  
  748. beginchar("B", size#, size#, 0);
  749.  
  750. upwhitepoint(1)
  751. whitechecker
  752.  
  753. endchar;
  754.  
  755.  
  756. beginchar("C", size#, size#, 0);
  757.  
  758. upwhitepoint(2)
  759. whitechecker
  760.  
  761. endchar;
  762.  
  763. beginchar("D", size#, size#, 0);
  764.  
  765. upwhitepoint(3)
  766.  
  767. whitechecker
  768. endchar;
  769.  
  770. beginchar("E", size#, size#, 0);
  771.  
  772. upwhitepoint(4)
  773. whitechecker
  774.  
  775. endchar;
  776.  
  777. beginchar("K", size#, size#, 0);
  778.  
  779. downwhitepoint(0)
  780. whitechecker
  781.  
  782. endchar;
  783.  
  784. beginchar("L", size#, size#, 0);
  785.  
  786. downwhitepoint(1)
  787. whitechecker
  788.  
  789. endchar;
  790.  
  791. beginchar("M", size#, size#, 0);
  792.  
  793. downwhitepoint(2)
  794. whitechecker
  795.  
  796. endchar;
  797.  
  798. beginchar("N", size#, size#, 0);
  799.  
  800. downwhitepoint(3)
  801.  
  802. whitechecker
  803. endchar;
  804.  
  805. beginchar("O", size#, size#, 0);
  806.  
  807. downwhitepoint(4)
  808. whitechecker
  809.  
  810. endchar;
  811.  
  812. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  813. % white points with black checkers %
  814. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  815.  
  816. beginchar("0", size#, size#, 0);
  817.  
  818. upwhitepoint(0)
  819. blackchecker
  820.  
  821. endchar;
  822.  
  823. beginchar("1", size#, size#, 0);
  824.  
  825. upwhitepoint(1)
  826. blackchecker
  827.  
  828. endchar;
  829.  
  830.  
  831. beginchar("2", size#, size#, 0);
  832.  
  833. upwhitepoint(2)
  834. blackchecker
  835.  
  836. endchar;
  837.  
  838. beginchar("3", size#, size#, 0);
  839.  
  840. upwhitepoint(3)
  841.  
  842. blackchecker
  843. endchar;
  844.  
  845. beginchar("4", size#, size#, 0);
  846.  
  847. upwhitepoint(4)
  848. blackchecker
  849.  
  850. endchar;
  851.  
  852. beginchar("P", size#, size#, 0);
  853.  
  854. downwhitepoint(0)
  855. blackchecker
  856.  
  857. endchar;
  858.  
  859. beginchar("Q", size#, size#, 0);
  860.  
  861. downwhitepoint(1)
  862. blackchecker
  863.  
  864. endchar;
  865.  
  866. beginchar("R", size#, size#, 0);
  867.  
  868. downwhitepoint(2)
  869. blackchecker
  870.  
  871. endchar;
  872.  
  873. beginchar("S", size#, size#, 0);
  874.  
  875. downwhitepoint(3)
  876.  
  877. blackchecker
  878. endchar;
  879.  
  880. beginchar("T", size#, size#, 0);
  881.  
  882. downwhitepoint(4)
  883. blackchecker
  884.  
  885. endchar;
  886.  
  887. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  888. % black points with white checkers %
  889. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  890.  
  891. beginchar("F", size#, size#, 0);
  892.  
  893. upblackpoint(0);
  894. whitechecker;
  895.  
  896. endchar;
  897.  
  898. beginchar("G", size#, size#, 0);
  899.  
  900. upblackpoint(1);
  901. whitechecker;
  902.  
  903. endchar;
  904.  
  905. beginchar("H", size#, size#, 0);
  906.  
  907. upblackpoint(2);
  908. whitechecker;
  909.  
  910. endchar;
  911.  
  912. beginchar("I", size#, size#, 0);
  913.  
  914. upblackpoint(3);
  915.  
  916. whitechecker;
  917. endchar;
  918.  
  919. beginchar("J", size#, size#, 0);
  920.  
  921. upblackpoint(4);
  922. whitechecker;
  923.  
  924. endchar;
  925.  
  926. beginchar("U", size#, size#, 0);
  927.  
  928. downblackpoint(0);
  929. whitechecker;
  930.  
  931. endchar;
  932.  
  933. beginchar("V", size#, size#, 0);
  934.  
  935. downblackpoint(1);
  936. whitechecker;
  937.  
  938. endchar;
  939.  
  940.  
  941. beginchar("W", size#, size#, 0);
  942.  
  943. downblackpoint(2);
  944. whitechecker;
  945.  
  946. endchar;
  947.  
  948. beginchar("X", size#, size#, 0);
  949.  
  950. downblackpoint(3);
  951.  
  952. whitechecker;
  953. endchar;
  954.  
  955. beginchar("Y", size#, size#, 0);
  956.  
  957. downblackpoint(4);
  958. whitechecker;
  959.  
  960. endchar;
  961.  
  962. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  963. % black points with black checkers %
  964. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  965.  
  966. beginchar("5", size#, size#, 0);
  967.  
  968. upblackpoint(0)
  969. blackchecker
  970.  
  971. endchar;
  972. beginchar("6", size#, size#, 0);
  973.  
  974. upblackpoint(1)
  975. blackchecker
  976.  
  977. endchar;
  978.  
  979.  
  980. beginchar("7", size#, size#, 0);
  981.  
  982. upblackpoint(2)
  983. blackchecker
  984.  
  985. endchar;
  986.  
  987. beginchar("8", size#, size#, 0);
  988.  
  989. upblackpoint(3)
  990.  
  991. blackchecker
  992. endchar;
  993.  
  994. beginchar("9", size#, size#, 0);
  995.  
  996. upblackpoint(4)
  997. blackchecker
  998.  
  999. endchar;
  1000.  
  1001. beginchar("u", size#, size#, 0);
  1002.  
  1003. downblackpoint(0)
  1004. blackchecker
  1005.  
  1006. endchar;
  1007.  
  1008. beginchar("v", size#, size#, 0);
  1009.  
  1010. downblackpoint(1)
  1011. blackchecker
  1012.  
  1013. endchar;
  1014.  
  1015. beginchar("w", size#, size#, 0);
  1016.  
  1017. downblackpoint(2)
  1018. blackchecker
  1019.  
  1020. endchar;
  1021.  
  1022. beginchar("x", size#, size#, 0);
  1023.  
  1024. downblackpoint(3)
  1025.  
  1026. blackchecker
  1027. endchar;
  1028.  
  1029. beginchar("y", size#, size#, 0);
  1030.  
  1031. downblackpoint(4)
  1032. blackchecker
  1033.  
  1034. endchar;
  1035.  
  1036. %%%%%%%%%%%%%%%%%%%
  1037. % An empty square %
  1038. %%%%%%%%%%%%%%%%%%%
  1039.  
  1040. beginchar("z", size#, size#, 0);
  1041.  
  1042. endchar;
  1043.  
  1044. %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1045. % A (left or right) border %
  1046. %%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1047.  
  1048. beginchar("Z", pensize#, size#, 0);
  1049.  
  1050. pickup pencircle scaled pensize;
  1051.  
  1052. draw (0pt,0pt)--(0pt,size);
  1053.  
  1054. endchar;
  1055.  
  1056. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1057. % An (upper or lower) border %
  1058. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1059.  
  1060. beginchar("-", size#, pensize#, 0);
  1061.  
  1062. pickup pencircle scaled pensize;
  1063.  
  1064. draw (0pt,0pt)--(size,0pt);
  1065.  
  1066. endchar;
  1067.  
  1068. %%%%%%%%%%%%%%%%%%%%%%%%%%%
  1069. % A "boarderthick" filler %
  1070. %%%%%%%%%%%%%%%%%%%%%%%%%%%
  1071.  
  1072. beginchar(0, pensize#, pensize#, 0);
  1073.  
  1074. endchar;
  1075.  
  1076. %%%%%%%%%%%%%%%%%%%
  1077. % A black Checker %
  1078. %%%%%%%%%%%%%%%%%%%
  1079.  
  1080. beginchar("@", size#, size#, 0);
  1081.  
  1082. blackchecker
  1083.  
  1084. endchar;
  1085.  
  1086.  
  1087. %%%%%%%%%%%%%%%%%%%
  1088. % A white Checker %
  1089. %%%%%%%%%%%%%%%%%%%
  1090.  
  1091. beginchar("*", size#, size#, 0);
  1092.  
  1093. whitechecker
  1094.  
  1095. endchar;
  1096.  
  1097. end
  1098.  
  1099.